A robot may be described as humanoid as long as it possesses certain attributes of the appearance and functionalities of man: a head, a trunk, two arms, two hands, two legs, two feet etc. Beyond appearance, the functions that a humanoid robot is capable of fulfilling will depend on its capacity to perform movements, to speak and to “reason”. Humanoid robots are capable of walking, of making gestures, with the limbs or with the head. The complexity of the gestures that they are capable of performing is continually increasing. Gestures coordinated with one another or coordinated with speech (for example a raised arm, threatening words spoken in a raucous tone), signals emitted by parts of the robot (notably its LEDs), can be the expression of the robot's behaviors which convey its “emotions” (for example, anger). Certain robots, notably the NAO robot, which is the platform on which the concepts and the means for implementing the present invention have been developed, offer several users the possibility of developing behaviors independently of one another. These possibilities are greatly improved with development tools employing user language, such as the Chorégraphe software. Consequently, the problem arises of knowing how to ensure the coherence of the various behaviors, programmed by different users, at the time of their execution, notably so as to avoid conflicts in the use of the hardware and software resources of the robot or robots, to ensure the synchronization of the availability of the resources which must be used concomitantly and to manage the priorities of execution of a certain number of functions.
It is traditional in robotics to ensure protection of the motors and to prohibit their simultaneous use by several behaviors; this is a first type of solution to this general problem of the management of resources, but it is not a general solution: in particular, this type of solution does not afford any response to the problem posed by the synchronization of different resources, nor to the problem of the freeing of the resources.
To solve these problems of the allocation of resources over time in other fields of technology, it is traditional to implement optimization mechanisms in the allocation of resources, notably using algorithms of the constraint-based logic programming type. These algorithms are, however, suited to the computations of the allocation of resources which are not consumed immediately since they are greedy in terms of computational resources. In particular, they could be used on a humanoid robot provided with multiple behaviors only for a very small proportion of the latter.
There does not therefore exist in the prior art any solution making it possible to solve the problem of the allocation of hardware or software resources, or those of other types, to independent processes. The present invention solves this problem by affording a hierarchical definition of resources, coupled with a local or decentralized resolution mechanism.